package com.googlecode.classgrep.grep.annotated.client;

import java.lang.annotation.Annotation;
import java.util.List;
import java.util.Map;

import com.googlecode.classgrep.info.ClassInfo;

public interface ClassGrepClient {

	
	/**
	 * Get unmodifiable annotated class Map, if invoke by GrepRobot
	 * 
	 * @return 
	 */
	Map<String, List<ClassInfo>> getAnnotatedClassMap();
	
	
	/**
	 * 
	 * Get unmodifiable not loaded class list, if invoke by GrepRobot
	 * 
	 * @return
	 */
	List<String> getNotLoadedClass();
	
	
	/**
	 * find unmodifiable annotated class list, if invoke by GrepRobot
	 * 
	 * @param annotation
	 * @return
	 */
	List<ClassInfo> findAnnotatedClasses(Class<? extends Annotation> annotation);
	
}
